import store from '@/store'
import axios from 'axios'
// create an axios instance
import { Message } from 'element-ui'
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
})
service.interceptors.request.use(config => {
  // 注意 token 获取不能写在外面不然 获取的只有一次获取token
  const token = store.state.user.token
  if (token) {
    config.headers.Authorization = 'Bearer ' + token
  }
  return config
}, error => {
  return Promise.reject(error)
})
// 请求拦截器
service.interceptors.response.use(response => {
  const { success, data, message } = response.data
  if (success) {
    return data
  } else {
    Message.error('用户名或密码错误')
    return Promise.reject(message)
  }
}, error => {
  // 如果是网络问题那么 error 不会返回response
  if (!error.response) {
    // 如果没有response,网络的问题
    Message.error('网络繁忙，请稍后重试')
    return Promise.reject(error)
  }
  if (error.response.status === 401) {
    // 清理token
    // 跳转到登录页面
    store.dispatch('user/logout')
    Message.error('登录信息过期了')
  }
  return Promise.reject(error)
})
export default service
